Giao thức máy in Game Boy Máy in Game Boy

Giao tiếp giữa Game Boy và Máy in Game Boy thông qua một liên kết nối tiếp đơn giản. Đồng hồ nối tiếp (do Game Boy cung cấp cho máy in), đầu ra dữ liệu nối tiếp (từ Game Boy đến máy in) cũng như đầu vào dữ liệu nối tiếp (đến Game Boy từ máy in). Game Boy gửi một gói đến máy in, máy in sẽ phản hồi lại bằng một xác nhận cũng như mã trạng thái.[4][5][6]

Định dạng gói

Giao tiếp thông qua Game Boy gửi đến máy in một cấu trúc gói đơn giản như hình dưới đây. Nói chung, giữa "sync_word" đầu tiên cho đến khi tổng kiểm tra là Game Boy giao tiếp với máy in. Hai byte cuối cùng của gói tin là để máy in xác nhận và hiển thị mã trạng thái hiện tại của nó.

Vị trí Byte0123456 + X6 + X + 16 + X + 26 + X + 36 + X + 4
Kích thước2 byte2 byte1 byte1 byte1 byte1 byteBiến đổi2 byte2 byte1 byte1 byte
Sự miêu tảSYNC_WORDSYNC_WORDCHỈ HUYNÉNDATA_LENGTH (X)DATA_LENGTH (X)Khối hàngCHECKSUMCHECKSUMACKTRẠNG THÁI
GB ĐỂ MÁY IN0x880x33Xem bên dướiXem bên dướiByte thấpByte caoXem bên dướiXem bên dướiXem bên dưới0x000x00
MÁY IN TO GB0x000x000x000x000x000x000x000x000x000x81Xem bên dưới
  • Lệnh có thể là Khởi tạo (0x01), Dữ liệu (0x04), In (0x02) hoặc Yêu cầu (0x0F).
  • Kích thước số lượng byte tải trọng phụ thuộc vào giá trị của trường `DATA_LENGTH`.
  • Trường nén là một chỉ báo nén. Không nén = 0x00
  • Checksum là tổng số byte đơn giản trong lệnh, độ dài dữ liệu và trọng tải dữ liệu.
  • Byte trạng thái là một bit-field byte biểu thị các trạng thái khác nhau của chính máy in. (ví dụ Nếu nó vẫn đang in)

Lệnh

Khởi tạo (0x01)

  • Kích thước tải trọng điển hình = 0

Gói này được gửi mà không có tải dữ liệu. Nó báo hiệu cho máy in để xóa cài đặt và chuẩn bị cho lần tải dữ liệu đầu tiên.

Dữ liệu (0x04)

  • Kích thước tải trọng điển hình = 640

Gói dữ liệu dùng để truyền dữ liệu hình ảnh vào bộ đệm dữ liệu của máy in. Kích thước điển hình của tải trọng dữ liệu là 640 byte vì nó có thể lưu trữ hai hàng có thể in được của 20 ô Game Boy tiêu chuẩn (2 bit màu trong lưới 8x8 pixel), trong đó ô Game Boy chiếm 16 byte.[7]

In (0x02)

  • Kích thước tải trọng điển hình = 4

Thao tác này ra lệnh cho máy in bắt đầu in. Nó cũng có 4 byte cài đặt để in.[6]

Payload ByteKiểuGiá trị tiêu biểuGhi chú
0không xác định0x1
1Lề in?Nibble cao cho căn lề trên. Nibble thấp cho căn lề dưới
2Bảng màu0xE4
3Độ bền đầu in?Giá trị 7 bit

Yêu cầu (0x0F)

  • Kích thước tải trọng điển hình = 0

Được sử dụng để kiểm tra byte trạng thái máy in. Điều này có thể để kiểm tra xem có đủ dữ liệu trong bộ đệm máy in để bắt đầu in trơn tru hay máy in hiện đang in hay không.

Trạng thái máy in Reply Byte

Bit XTrạng thái Byte Bit Vị trí Ý nghĩa
Bit 7Pin quá yếu
Bit 6Lỗi khác
Bit 5Kẹt giấy
Bit 4Lỗi gói dữ liệu
Bit 3Dữ liệu chưa được xử lý
Bit 2Dữ liệu hình ảnh đã đầy
Bit 1Máy in bận
Bit 0Kiểm tra lỗi

Tài liệu tham khảo

WikiPedia: Máy in Game Boy http://skyscraper.fortunecity.com/macro/730/ http://www.gamefaqs.com/gbc/575529-logical http://www.huderlem.com/demos/gameboy2bpp.html http://uk.gameboy.ign.com/articles/133/133470p1.ht... http://uk.ign.com/games/puzzled-809086/gbc-15971 http://www.ziegler.desaign.de/gb2pp7.gif http://gbdev.gg8.se/wiki/articles/Gameboy_Printer https://www.flickr.com/groups/gameboycamera/discus... https://www.youtube.com/watch?v=LWlymZDFEs8 https://shonumi.github.io/articles/art2.html